#include<stdio.h>
#include<malloc.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>

//int g_unval;
int g_val = 100;

int main(int argc,char* argv[],char* envp[]) 
{
  pid_t id = fork();
  if(id == 0){
    //child
    g_val = 200;
    printf("child:pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
  }
  else{
    //father
    sleep(2);
    printf("father:pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val); 
  }
  sleep(1);










//  printf("code addr:%p\n",main);
//  char *str = "hello world";
//  printf("read only addr:%p\n",str);
//  printf("init addr:%p\n",&g_val);
//  printf("uninit addr:%p\n",&g_unval);
//  
//  int *p =(int*)malloc(10);
//  printf("heap addr:%p\n",p);
//  
//  printf("stack addr:%p\n",&str);
//  printf("stack addr:%p\n",&p);
//
//  for(int i = 0;i < argc;i++){
//    printf("args addr:%p\n",argv[i]);//ls -a -l -i
//  }
//  int i = 0;
//  while(envp[i]){
//    printf("env addr:%p\n",envp[i]);
//    i++;
//  }
//

  //printf("%s\n",getenv("MYVAL"));
  //extern char **environ;
  //for(int i = 0;environ[i];i++){
  //  printf("%s\n",environ[i]);
  //}
  //int i = 0;;
  //while(envp[i] != NULL){
  //  printf("envp[%d]:%s\n",i,envp[i]);
  //  i++;
  //}
  //argc等于2说明后面跟了-a等指令
  //if(argc == 2){
  //  if(strcmp(argv[1],"-a")==0){
  //    printf("hello bit\n");
  //  }
  //  else if(strcmp(argv[1],"-b")==0){
  //    printf("hello world\n");
  //  }
  //}
  //else{
  //  printf("hello default\n");
  //}
   //for(int i=0;i < argc;i++){
   //  printf("argv[%d]:%s\n",i,argv[i]); 
   //} 
   return 0; 
}
